package util

import (
	"errors"

	"gorm.io/gorm"
)

type Paginator struct {
	Total  int `json:"total"	form:"total"`   // 总页数
	Limit  int `json:"limit" form:"limit"`   // 每页条数
	Offset int `json:"offset" form:"offset"` // 偏移量
	Page   int `json:"page" form:"page"`     // 当前页数
}

func PaginatorHandler(paginator *Paginator) error {
	if paginator == nil {
		return errors.New("输入错误")
	}
	// 设置默认页面大小
	if paginator.Limit == 0 {
		paginator.Limit = 10
	}
	if paginator.Page == 0 {
		paginator.Offset = 0
	} else if paginator.Page > 0 {
		paginator.Offset = (paginator.Page - 1) * paginator.Limit
	}
	return nil
}

// gorm分页数据库查询
func (p *Paginator) GormPagenation() func(db *gorm.DB) *gorm.DB {
	return func(db *gorm.DB) *gorm.DB {
		return db.Offset(p.Offset).Limit(p.Limit)
	}
}
